﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ComponentFactory.Krypton.Toolkit;
namespace XBYTestManagement
{
    public partial class FrmTestMethodList : KryptonForm
    {
        public FrmTestMethodList()
        {
            InitializeComponent();

            dataSet.Tables[0].Rows.Add("使用标准电源（适配器）连接打印机，安装该款打印机所允许的最大宽度的热敏连续纸（和碳带），开启打印机，通过测试工具确认当前的打印浓度为出厂默认值；", "st", "ya", "单张印制速度", "1");
            dataSet.Tables[0].Rows.Add("让纸张伸出打印机出纸口2~5cm距离，相对于打印机的某个位置在介质上使用记号笔标注起始位置；", "","", "单张印制速度", "2");
            dataSet.Tables[0].Rows.Add("使用测试专用12.5%占空比的样张(测试时使用分辨率、指令、打印宽度与待测产品相匹配的样张)，宽度为最大可打印宽度，根据不同的打印速度，进行不同长度（长度与速度对应关系，见下表）测试，如速度分别为150mm/s、280mm/s时，则连续发送1m样张2、3次并打印；注：如果打印机的打印缓冲区不能够一次满足所要求的打印距离，可以采用无间隔多次发送打印的方式满足所要求的打印距离（必须保证打印过程中无停顿）。", "", "", "单张印制速度", "3");
            dataSet.Tables[0].Rows.Add("使用秒表当打印机开始打印测试样张时计时，打印动作停止时计时结束，得到该次打印时间；", "","", "单张印制速度", "4");
            dataSet.Tables[0].Rows.Add("使用记号笔再次在先前同一位置处的介质上标注终止位置，在确认所打样张无压缩的前提下使用毫米刻度尺测量本次打印距离；", "","", "单张印制速度", "5");
            dataSet.Tables[0].Rows.Add("根据公式：速度=距离/时间，得出本次打印速度；", "", "", "单张印制速度", "6");
            dataSet.Tables[0].Rows.Add("重复上述操作5次，取平均值。", "如规格书中有出纸速度下限要求，实测速度必须满足下限标准；如规格书中无特殊要求，实际出纸速度应在设定值*（1±5%）范围内", "", "单张印制速度", "7");

            dataSet.Tables[0].Rows.Add("使用标准电源（适配器）连接打印机，安装该款打印机所允许的最大宽度的热敏连续纸（和碳带），开启打印机，通过测试工具确认当前的打印浓度为出厂默认值；", "", "", "打印机部件出\\退纸速度", "1");
            dataSet.Tables[0].Rows.Add("让纸张伸出打印机出纸口2~5cm距离，相对于打印机的某个位置在介质上使用记号笔标注起始位置；", "", "", "打印机部件出\\退纸速度", "2");
            dataSet.Tables[0].Rows.Add("使用测试专用12.5%占空比的样张(测试时使用分辨率、指令、打印宽度与待测产品相匹配的样张)，宽度为最大可打印宽度，根据不同的打印速度，进行不同长度（长度与速度对应关系，见下表）测试，如速度分别为150mm/s、280mm/s时，则连续发送1m样张2、3次并打印；注：如果打印机的打印缓冲区不能够一次满足所要求的打印距离，可以采用无间隔多次发送打印的方式满足所要求的打印距离（必须保证打印过程中无停顿）。", "", "", "打印机部件出\\退纸速度", "3");
            dataSet.Tables[0].Rows.Add("使用秒表当打印机开始打印测试样张时计时，打印动作停止时计时结束，得到该次打印时间；", "", "", "打印机部件出\\退纸速度", "4");
            dataSet.Tables[0].Rows.Add("使用记号笔再次在先前同一位置处的介质上标注终止位置，在确认所打样张无压缩的前提下使用毫米刻度尺测量本次打印距离；", "", "", "打印机部件出\\退纸速度", "5");
            dataSet.Tables[0].Rows.Add("根据公式：速度=距离/时间，得出本次打印速度；", "", "", "打印机部件出\\退纸速度", "6");
            dataSet.Tables[0].Rows.Add("重复上述操作5次，取平均值。", "如规格书中有出纸速度下限要求，实测速度必须满足下限标准；如规格书中无特殊要求，实际出纸速度应在设定值*（1±5%）范围内", "", "打印机部件出\\退纸速度", "7");
        }

        private void kryptonDataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
        {
            
            //纵向合并
            if (this.kryptonDataGridView1.Columns["method"].Index == e.ColumnIndex && e.RowIndex >= 0)
            {
                Brush brush = new SolidBrush(kryptonDataGridView1.ForeColor);
                using (
                    Brush gridBrush = new SolidBrush(this.kryptonDataGridView1.GridColor),
                    backColorBrush = new SolidBrush(e.CellStyle.BackColor))
                {
                    using (Pen gridLinePen = new Pen(gridBrush))
                    {
                        // 擦除原单元格背景
                        e.Graphics.FillRectangle(backColorBrush, e.CellBounds);
                        ////绘制线条,这些线条是单元格相互间隔的区分线条,
                        ////因为我们只对列method做处理,所以datagridview自己会处理左侧和上边缘的线条
                        if (e.RowIndex != this.kryptonDataGridView1.RowCount - 1)
                        {
                            if (e.Value.ToString() != this.kryptonDataGridView1.Rows[e.RowIndex + 1].Cells[e.ColumnIndex].Value.ToString())
                            {

                                e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom - 1,
                                e.CellBounds.Right - 1, e.CellBounds.Bottom - 1);//下边缘的线
                                //绘制值
                                if (e.Value != null)
                                {
                                    e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,brush,
                                        /*Brushes.Crimson,*/ e.CellBounds.X + 2,
                                        e.CellBounds.Y + 2, StringFormat.GenericDefault);
                                }
                            }
                        }
                        else
                        {
                            e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom - 1,
                                e.CellBounds.Right - 1, e.CellBounds.Bottom - 1);//下边缘的线
                            //绘制值
                            if (e.Value != null)
                            {
                                e.Graphics.DrawString((String)e.Value, e.CellStyle.Font, brush,
                                    e.CellBounds.X + 2,
                                    e.CellBounds.Y + 2, StringFormat.GenericDefault);
                            }
                        }
                        //右侧的线
                        e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1,
                            e.CellBounds.Top, e.CellBounds.Right - 1,
                            e.CellBounds.Bottom - 1);

                        e.Handled = true;
                    }
                }
            }
        }
    }
}
